package com.workflow.workflowproject.pojo.lowflow.table;

import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;

import java.io.Serial;

/**
 *  表定义层。
 *
 * @author Administrator
 * @since 2024-10-31
 */
public class FlowNodeFieldTableDef extends TableDef {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 
     */
    public static final FlowNodeFieldTableDef FLOW_NODE_FIELD = new FlowNodeFieldTableDef();

    /**
     * 节点字段控制id
     */
    public final QueryColumn ID = new QueryColumn(this, "id");

    /**
     * 可写  (0、不可写；1、可写)
     */
    public final QueryColumn HIDDEN = new QueryColumn(this, "hidden");

    /**
     * 字段id
     */
    public final QueryColumn FIELD_ID = new QueryColumn(this, "field_id");

    /**
     * 可读（0、不可读；1、可读）
     */
    public final QueryColumn READABLE = new QueryColumn(this, "readable");

    /**
     * 隐藏（0、隐藏；1.不隐藏 ）
     */
    public final QueryColumn REQUIRED = new QueryColumn(this, "required");

    /**
     * 流程文件id
     */
    public final QueryColumn FLOW_FILE_ID = new QueryColumn(this, "flow_file_id");

    /**
     * 任务节点id
     */
    public final QueryColumn TASK_NODE_ID = new QueryColumn(this, "task_node_id");

    /**
     * 所有字段。
     */
    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");

    /**
     * 默认字段，不包含逻辑删除或者 large 等字段。
     */
    public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, TASK_NODE_ID, READABLE, HIDDEN, REQUIRED, FIELD_ID, FLOW_FILE_ID};

    public FlowNodeFieldTableDef() {
        super("", "t_com_flow_node_field");
    }

    private FlowNodeFieldTableDef(String schema, String name, String alisa) {
        super(schema, name, alisa);
    }

    public FlowNodeFieldTableDef as(String alias) {
        String key = getNameWithSchema() + "." + alias;
        return getCache(key, k -> new FlowNodeFieldTableDef("", "t_com_flow_node_field", alias));
    }

}
